你是十八般武藝樣樣精通,還是樣樣通樣樣鬆?
工程師真的很難,會得不多會被問為什麼沒學,會得很多還要被質疑專業程度;這種比較類型的問題,除非你有事先做功課,不然就算你都會用也未必能在現場對答如流。
你會的後端框架不只一個,可以說明一下它們之間的差異嗎?
回答問題所需具備的知識
衍伸問題
因為履歷資訊
中顯示求職者會如下的後端(Backend)框架:
當你會的東西多,面試官就會想了解你是每個都學一點,還是真的了解它。
之前使用 PHP 的 Laravel 框架
開發過內部管理系統,也曾用 Node.js 的 Express.js 框架
完成過餐廳點餐系統。
兩者的差異主要因為程式語言
而產生的,PHP 是同步語言、多執行緒,Node.js 是一個能執行 JavaScript 的環境,支援非同步,為單執行緒。
如果專案要求穩定一致的效能
,我會偏向使用 PHP 框架;而如果要承接高流量
,我會選擇 Node.js 框架。
如果面對一個問題只有一種解決方案
時,面試官會深入詢問
這個技術;但如果面對問題有兩個以上的解決方案
,他就會問你在不同情境
下該使用什麼技術,每個技術都有各自的優勢,這邊我們就從不同的角度來做分析吧~
同步的 PHP vs 異步的 Node.js
硬體設備
上。多執行緒的 PHP VS 單執行緒的 Node.js
應用場景
從 Client 端與 Server 端的溝通頻率來做分析:
可使用的資源
因為 NPM 的命名方式太自由,導致上面有很多的資源都是無效資源,
關鍵字第一個找到的未必是最合適的
。
人才市場
職位流動性高,用 PHP 開發
會比較合適。會 Node.js 的薪水會略高於會 PHP
的求職者。專案容量
用 Laravel 跟 Express.js 來比較:
實作過程往往要擴充一堆 package
,而且一個 package 往往會有很多的 dependency;這些原因容易導致最終實作出來的是一個笨重的專案。程式語言轉換
除非你的運氣逆天,每次都剛好找到符合你技能樹的公司,而且這間公司專案用的技術還很固定;不然肯定要面對程式語言的轉換,這邊分享幾個轉換時要注意的重點。
Laravel 很類似的 AdonisJS 框架
,這份不適感會下降許多,反之亦然。內建函式都要重新學習、生命週期也要重新熟悉、錯誤處理的經驗也要重新累積
。效能
面對錯誤的處理
不過這塊可以透過 PM2 的 Cluster Mode 與自動重啟來補救。
熱更新
在開發階段推薦使用 supervisor 這款套件。
STEP 1:在全域安裝套件npm install supervisor -g
STEP 2:建立一個myapp.js
的檔案,並複製貼上下面程式
var http = require("http");
http
.createServer(function (req, res) {
res.writeHead(200, { "Content-Type": "text/plain" });
res.end("Hello World!");
})
.listen(3000, "127.0.0.1");
STEP 3:用node myapp.js
啟動程式後,修改res.end("Hello World!");
的內容;再刷新網頁後內容不變
。
STEP 4:改用supervisor myapp.js
啟動程式,修改res.end("Hello World!");
的內容;再刷新網頁後內容更新
。
supervisor 也可以做專案資料夾的監控,但是要記得排除一些資料夾(ex:儲存 log 檔的);否則你的專案就無時無刻在重起了。
如果是正式的網站且流量大,建議使用 PM2 來做處理,它也有監控資料夾的功能。
存在即合理
預估使用者數量不多或是主要來自於內部成員,用什麼框架及程式語言其實都差不多
。出事了公司沒有能夠處理的人才
,沒有人會在意一個不能用的網站效能有多好。當你有辦法靠它解決各種現實難題時,再去學新的框架跟程式語言也不晚
。考點:這題其實是想了解求職者的人格特質
這兩個都是為了解決問題的技術,我一開始用 Node.js 的 Express 框架獨立完成
了幾份專案;但後來有一個需要 Team work
的大型專案,因為當時的組長比較熟悉 PHP 的 Laravel 框架,所以我便藉由這個機會學習新的技術
;也因為這次的技術轉換,讓我了解不同框架在部署以及效能各方面的差異
。
我想透過上面的回答給面試官幾個訊息:
- 我能獨立完成專案,也可以團隊合作。
- 我願意學習新技術。
- 學習的同時會分析不同框架的優劣。
考點:確認求職者對框架的認知
好處
框架能夠讓初學者快速入門並開發出有一定水平
的專案,因為框架提供了許多常用的函式,因此可以大幅縮短專案時程
;在團隊協作上框架優勢更為明顯,能夠讓成員有一致的開發方式
。
壞處
因為框架已經幫開發人員做了太多事情,這會導致開發人員並不理解許多功能的原理
,這也造成了一但框架無法滿足功能,初學者的生產力會斷崖式下降
;如果長期使用,也容易讓自己的開發思維被限制在框架內
。
希望讀者不要只把我提出來的問題當成面試會出的考題;當面試官會這樣詢問時,通常是因為實務上也會遇到類似的問題。
感謝大家的閱讀,如果喜歡我的文章可以訂閱
接收通知;如果有幫助到你,按Like
可以讓我更有寫文的動力,我們明天見~
我在 Medium 平台 也分享了許多技術文章
❝ 主題涵蓋「MIS & DEVOPS、資料庫、前端、後端、MICROSFT 365、GOOGLE 雲端應用、自我修煉」希望可以幫助遇到相同問題、想自我成長的人。❞
在許多人的幫助下,本系列文章已成功出版,除了添加新的篇章,更完善了每個案例的應對進退;如果對現在的職涯感到迷茫,也許這本書能帶給你不一樣的觀點~
推一個,對於正在找工作的我這系列文超棒的,真的大感謝
等找到工作在順便把大大爬蟲的文章補完
知道文章對讀者有幫助,是我寫作的動力來源~
祝你找到合適的工作喔
特地註冊來推一個
原本是為了自架網站要上課 猶豫要PHP/node js
拿面試來講滿清楚的 感謝!
(還是真的是在講面試? .? )
哈哈哈,文章對你有幫助最重要XD
同樣的知識在不同情境下會有不同的解讀呢~